/* 注册,登录,退出相关的路由表 */

const express = require('express')
const app = express()
const path = require('path')
var User = require('../models/user')
var md5 = require('blueimp-md5')

const router = express.Router()

// 测试
router.get('/img',function(req,res){
	res.sendFile(path.join(__dirname, 'public/img/search.png'));
})

router.get('/', function(req, res) {
	console.log(req.session.user)
	res.render('index.html',{
		user: req.session.user
	})
})

router.get('/login', function(req, res) {
	res.render('login.html')
})

router.post('/login', function(req, res) {
	// 获取登录表单提交的数据
	var body = req.body
	console.log(body)
	// 查询Mongo数据库，确定用户是否存在
	User.findOne({
		$or: [
			{
				email: body.email
			},
			{
				password: md5(body.password)
			}
		]
	},function(err, user){
		if(err){
			return res.status(500).json({
				err_code: 500,
				msg: err.message
			})
		}
		
		if(!user){
			return res.status(200).json({
				err_code: 1,
				msg: '邮箱或者密码错误'
			})
		}
		
		// 用户登录存在，通过session记录登录状态
		req.session.user = user
		// 异步请求，服务端没办法重定向到首页，只能通过客户端的方式
		res.status(200).json({
			err_code: 0,
			msg: 'OK'
		})
	})
})

router.get('/register', function(req, res) {
	res.render('register.html')
})

router.post('/register', function(req, res) {
	// 获取表单提交的数据
	var body = req.body
	// 做密码加密，防止数据库泄露时密码丢失,一般来说做多次md5加密安全性会高一点，可以防止暴力破解
	body.password = md5(body.password)
	// 操作数据库,判断该用户是否存在，已存在不允许注册
		User.findOne({
			$or: [
				{
					email: body.email
				},
				{
					nickname: body.nickname
				}
			]
		}, function(err, data) {
			if(err){
				//return res.status(500).send('Server Error')
				return res.status(500).json({
					success: false,
					msg: '服务器内部错误',
					err_code: 500
				})
			}
			if(data){
				// 邮箱或者昵称已存在
				//return res.status(200).send(JSON.stringify({msg: '邮箱或者昵称已存在'}))
				return res.status(200).json({
					success: true,
					msg: '邮箱或者昵称已存在',
					err_code: 1
				})
			}
			new User(body).save(function(err, user){
				if(err){
					return res.status(500).json({
						success: false,
						msg: '服务器内部错误',
						err_code: 500
					})
				}
				// 注册成功，服务端使用session技术保存用户登录状态
				req.session.user = user
				// 这里也可以使用express提供的res.status(200).json({放json对象})
				res.status(200).send(JSON.stringify({success: true,
				msg: 'OK',err_code: 0}))
			})
		})
})
// 退出登录
router.get('/logout', function(req, res) {
	// 1.从session中清除登录状态
	req.session.user = null
	// 2.重定向到登录页
	res.redirect('/login')
})

module.exports = router